
                               "DELAYED CODE"
                                 technology

                                  1.1

[*] 

    ,   .   ,    
        .
       ,     .

[*] 

       " ",   ,  ,
    ,   ,      
      (/    ).
         ,   
    .

           ,
         ,   
      .

          " " -
       .      :

    1.      ,   
           .
    2.   ,       
       ,     . ("delayed code")

      ,     
        .

[*]  ( ,        )

         A[]   
      N,      T.
         B[],    
     / "" .

    ,   N      
    ,     / 
        .

          ,  
        ,    ,
              .

    ,       
      A[],      B[].
     ,      N  ( T)
      B[]   "" .
      ,  .

[*]  ( )

         ,  
    A[]  B[]         .
               .

        RSA.
       ,    PGP.
        ,     
       .

    ,    A[]     .
      N   A[]   B[].
    ,        ,
            .
        B[]   A[].

         ,    -
    .          ,
     .     ,     .

[*]     

      : ,   T (  N)
       ,    , 
     .

      ,   RSA  :
    :    encr = (text ^ e) % m
    : text = (encr ^ d) % m
     {e,m}  {d,m} -    .
    ('^'    , '%'  ,  
       )

     ,  e ,  3, 17, 50003   .
       d  ,    1023 .

             /
    ,  d  m - ,    e  .
      :

              :                           :
              ~~~~~~~~~                           ~~~~~~~~~~~
     ( " ",           ( " ",
        )                           )

    * A[] <--                 * x = B[]
    *    A[]              N : x = (x ^ d) % m
    * x = A[]                              A[] = x
      N : x = (x ^ e) % m             *    A[]
      B[] = x
    *   B[]  

       'modexp'.

    // modexp:        
    // : x = (a ^ e) % m

    void modexp(bignumber& x,   // 
                bignumber a,    // 
                bignumber e,    // 
                bignumber m,    // 
    {
        x = 1;
        bignumber t = a;
        for (int i = 0; i <= MaxBit(e); i++)
        {
            if (e.GetBit[i] == 1)
              x = (x * t) % m;        // modmult()
            t = (t * t) % m;          // modmult()
        }
    }

      , modexp()   modmult()
    (e.#bit + e.#bit1 - 1) .
    (-1  ,      ;
            )
      modmult()      
      .
     ,    modmult() 
       . :

  Decr.time = Encr.time * (D.#bit+D.#bit1 - 1) / (E.#bit1+E.#bit1 - 1) * K

    :

    #bit  ==     D  E
    #bit1 ==   
             (   ,     .
                      )
    #bit + #bit1 - 1 ==    modmult()

    K = 0.9+-10% -- ,  - ,   modmult()
                      ,   
                    .  ,   N-->oo  K-->1

[*] 

     ,      
        10 .
     :      
    ,      ,    .

    -,  RSA .    1024- , e = 3.
    : 'KEYGEN.EXE KEY\DPGN 1024 3 3'
      : 1024-bit N, E==3, D=1023-bit/519*'1'

      / ( ):
    ratio = (1023+519-1)/(2+2-1)*0.9 = 462+-10%

        ,     ,
       .

    : 'DGPGN.EXE e 100'
    : 100 ,   = 815 
    : 'DGPGN.EXE d 100'
    : 100 ,   = 360228 

    ratio = 360228/815 = 441

      N  10- .

     100    360228 ,
     N    10*60*1000  (10 ), 
    N = 60*10*1000 * 100 / 360228 = 167

     167     60*10*1000 , 
      = 60*10*1000 / 441 = 1360 .

         
        10- .

    .

    : 'DPGN.EXE e 167'
     : 1268 
    : 'DPGN.EXE d 167'
     : 600477  = 10  0.5 

      :
    /*        */

    :    :          N (1024- )
                                     K5-100    Celeron-500
    10         1.3           167         950
    1            7.8          1000        5700
    1             3          24000      136800
    1          21         168000      957600
    1          1.5           672000     3830400
    1             18         8064000    45964800
    16         1 
    10             1 
    40             1 

[*]    

      'text = (encr ^ d) % m'  
     :

      a = ((encr % p) ^ dp) % p            // dp = d % (p-1)
      b = ((encr % q) ^ dq) % q            // dq = d % (q-1)
      if (b < a) b += q
      text = a + p * (((b - a) * u) % q)       // u: (u * p) % q = 1

            .
        d  m,    ,     
     p  q.

[*]    

    d    ,  
         :

   d' = d + (p-1)*(q-1) * t,  t=0,1,2,...,

      d   ,
          .

        :     , 
     DPGN-   ,
    p  q,  d'.
    ,     d,  
            ,
    .

[*]  

    1.  ,       N,
          CRC.
            ,
              .
       ,    N   ,
            1000     
          .

    2.   ,  -   -  {N : x = (x ^ d) % m}
               ( p  q),
        -    -,
          .
          ,    
         modexp(),   (    ):
         N :
         {
           x = (x ^ d) % m;
           x = x xor <->;
         }
        DPGN.EXE    ,   .

[*]  " " ( ?)

    *    , ,    ,
      ,  .
      :  ,  , 99%  .
         1%  ( )  
           ,      -
      ,   ,    .

    *        .
       "delayed code"     url-,
       ,      ,  .

    *        ,
         ...   .

    *          
      "".   .

    *    :  - loveletter,
             .
           , " "  ""?
         : "   ". ;-)

                                                            (x) 2000 Z0MBiE
                                   * * *
